/**
 * @author：anlzou
 * @Date：Created in7:28 2021/4/9
 * @Github：https://github.com/anlzou
 * @Description：
 */
package com.anlzou.Transformation;

public class TransformationUpAndDown {
    public static void main(String[] args) {
        /*=================test-1==================*/
        /**
         * 向上转型
         * 隐藏了子类的方法
         */
        Father father = new Son();
        father.sleep();

        /**
         * （间接）向下转型
         *
         * 因为 Father father = new Son()，所以是间接
         */
        ((Son)father).p();


        /*=================test-2==================*/

        Father father1 = new Father();
        father1.sleep();
        /**
         * 直接向下转型
         *
         * 因为 Father father1 = new Father()，所以是直接
         */
        //((Son)father1).p(); //报错


        /*=================test-3==================*/
        Son son = new Son();
        son.sleep();
        son.p();

        /**
         * 直接向上转型
         *
         * 因为 Son son = new Son()，所以是直接
         */
        ((Father)son).sleep();
    }
}
